Skip to content

UVC: move application decision to the application #93192

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

josuah
Copy link
Contributor

@josuah josuah commented Jul 16, 2025

Dependency:

The USB class was doing arbitrary "best guess" choices about what pixel formats or resolutions to include (all of them, and min/max only when format are ranges).

  • In the class, add a uvc_add_format() to allow the application to push the exact format it wants
  • In the class, remove all format-related video API calls away from the UVC stack, to let the application handle this
  • In the sample, filter out formats that are not supported by the host whenever standard formats are also supported
  • In the sample, filter out formats that are too large for the memory

What is added in the sample is a matter of application choices, and trapping these choices in the UVC class prevented the samples to work without manual configuration on diverse platform.

MacOS support still not confirmed.
Linux, Windows, Android tested functional with the hardware I have.

@josuah josuah marked this pull request as draft July 16, 2025 10:22
@github-actions github-actions bot added area: USB Universal Serial Bus area: Samples Samples labels Jul 16, 2025
@github-actions github-actions bot requested a review from nashif July 16, 2025 10:23
@josuah
Copy link
Contributor Author

josuah commented Jul 16, 2025

This is not ready for review, will be properly split in individual commits, and "un-drafted" when ready...

@josuah josuah force-pushed the pr_uvc_no_policy branch from 70ab814 to 4833717 Compare July 18, 2025 21:48
@josuah josuah changed the title [WIP] UVC: remove the policies from the class UVC: remove the policies from the class Jul 18, 2025
@josuah
Copy link
Contributor Author

josuah commented Jul 18, 2025

Force-push:

  • Rebase on top of the MacOSX-related bugfix

Windows, Linux, MacOSX, Android are now expected to all work.

Tested with nRF52840-DK:

west build --board=nrf52840dk/nrf52840 --snippet=video-sw-generator samples/subsys/usb/uvc/

Tested with Arduino Nicla Vision:

west build --board=arduino_nicla_vision/stm32h747xx/m7 samples/subsys/usb/uvc/

@josuah josuah added area: Video Video subsystem Release Notes Required Release notes required for this change labels Jul 18, 2025
@josuah josuah changed the title UVC: remove the policies from the class UVC: move application decision to the application Jul 19, 2025
@josuah josuah force-pushed the pr_uvc_no_policy branch 2 times, most recently from 1468623 to f1cb80e Compare July 24, 2025 11:19
josuah added 3 commits July 24, 2025 16:23
The UVC class was deciding itself which formats were sent to the host.
Remove this logic out of the UVC class and introduce uvc_add_format() to
give the application the freedom of which format to list.

Signed-off-by: Josuah Demangeon <me@josuah.net>
The UVC class now lets the application select the format list sent to the
host. Leverage this in the sample to filter out any format that is not
expected to work (buffer too big, rarely supported formats).

Signed-off-by: Josuah Demangeon <me@josuah.net>
Add USB UVC device's new uvc_add_format() function to the release note,
and document the semantic changes of UVC APIs in the migration guide.

Signed-off-by: Josuah Demangeon <me@josuah.net>
@josuah josuah force-pushed the pr_uvc_no_policy branch from f1cb80e to f5328dd Compare July 24, 2025 16:23
@josuah
Copy link
Contributor Author

josuah commented Jul 24, 2025

Force-push:

  • Rebase on main to fix conflict.
  • Reword the documentation and commit messages.
  • Add a migration guide entry for the semantic change (but no direct API breakage).

Copy link

@josuah josuah marked this pull request as ready for review July 24, 2025 16:56
@zephyrbot zephyrbot added the Release Notes To be mentioned in the release notes label Jul 24, 2025
@zephyrbot zephyrbot requested review from cfriedt and jhedberg July 24, 2025 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Samples Samples area: USB Universal Serial Bus area: Video Video subsystem Release Notes Required Release notes required for this change Release Notes To be mentioned in the release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants